# 使用装饰器来为斐波那契函数添加缓存
# 使用递归函数重构斐波那契函数：f(n) = f(n-1) + f(n-2)
from pprint import pprint
# 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377,

import time
def cache_deco(func):
    cache={}
    def wrapper(*args,**kwargs):
        if args not in cache:
            cache[args]=func(*args)
        # print('******',cache[args])
        # print(type(cache[args]))
        return cache[args]
    return wrapper

	# 保存n  执行后的结果
	# a = {1:1,2:1,4:2}
	# 判断当前cache a中是否有结果, 有的话就直接返回, 不需要再算一遍；没有就执行以下;

@cache_deco
def fib(x):
    if x <= 1:
        return x
    else:
        return fib(x - 1) + fib(x - 2)

for i in range(1,15):
    print("__________")
    print(fib(i))
    # print(fib(i),end=',  ')




